// Copyright 2013 Petar Maymounkov
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package anchor

type File struct {
	path   string
	anchor Payload
}

func newFile(h *Handle) *File {
	// File objects do not maintain a handle (strong reference) to the underlying node.
	// They just copy all of the file's immutable data.
	defer h.Close()
	return &File{
		path:   h.Node.Path,
		anchor: h.Node.Anchor.Data,
	}
}

// Path returns the fully-qualified path of this file.
func (f *File) Path() string {
	return f.path
}

// Anchor returns the payload that this file points to.
func (f *File) Anchor() Payload {
	return f.anchor
}
